iT邦幫忙

2024 iThome 鐵人賽

DAY 4
0
DevOps

我獨自升級:從水管工走向 DataOps系列 第 4

【Day 4】Airflow 連接 AWS S3 - 介紹與 IAM 設定

  • 分享至 

  • xImage
  •  

前言

接下來幾天,會說明 Airflow 一些額外功能,包含 S3 連接方式、Custom XCom 解決 task 之間的資料傳遞、Slack 通知設定,主要還是圍繞再將 Data Pipeline 設計的更完善上面。

  1. AWS S3 介紹和連接是為了後續 Custom XCom 做準備
  2. Slack 通知是為了 airflow 除錯警告

先決條件

  • 可正常運行的 Airflow 環境
  • AWS 帳號

S3 bucket 介紹

Amazon S3 全名為 Simple Storage Service,是一個雲端儲存服務,支援多種檔案類型,可以用來存放和管理各種文件,如照片、影片、文件、備份等等,隨時下載或分享都可以,還有其他特性,像是擴展性佳、儲存成本低、可用性高(運行期間99.99%可以正常訪問)、版本管控、權限管控、檔案加密等等。常常被用在網站托管、數據備份、或大數據中介站。

類似工具:

  • Google Cloud Storage
  • Microsoft Azure Blob Storage

題外話:S3 還有多種儲存類別(Storage Classes),正常都是用標準(Standard),之前攝影師朋友跟我說他都用冰河封存類型(Glacier Deep Archive)來存放大量 TB 級的影音資料,儲存很便宜,1TB 每個月只要 1美金,但是真的需要拿回來就需要一大筆錢和時間,但至少是備份的最後手段,之後有機會也試看看~

S3 bucket 架構

桶 (bucket)
└── 物件 (object)
    ├── 路徑名稱 (key)
    └── 實際內容 (value)

s3 上每個實體稱為桶(bucket),bucket 內的每個內容稱為物件 (object),想要取的物件,就必須透過物件的 路徑名稱 (key),才能關聯到物件 (object)的實際內容 (value)。

所有的 bucket 名稱都是唯一的,例如我的 bucket 取名叫 abcdef,那就不會有第二個 abcdef bucket,不同的 region 或 account 也不不行重複。

s3 上的物件存取網址為 http://s3.amazonaws.com/{bucket}/{key} ,但要直接點開能夠取得,前提是整個內容都是 public-read 的狀態,基本上不太可能,所以都會透過 IAM 設定特定 user 限制地存取內容,再用這個 user 的 Key IDAccess Key 去存取。

IAM 就是用來管理權限的服務,可以設定不同的使用者群組、個別使用者、角色、政策等等,對象可能是人也可能是AWS 其他服務。

  1. 給 shawn 存取 s3 的服務
  2. 給 EC2 一個角色(role),且這個 role 已包含存取 s3 的權限 ,此時 EC2 就能夠存取 s3 的服務

設定 AWS S3 連接

從 Airflow Web UI 設定 AWS config

在 Airflow 網頁介面,選擇 Admin > Connections,來進入 Connection 管理介面,點擊 + 新增一個新的連接。
https://ithelp.ithome.com.tw/upload/images/20240918/20135427DMtnnsAJtp.png

  • Conn Id : aws_conn(可自行設定)
  • Connection Type : Amazon Web Services
  • 設定 AWS Access Key ID 和 AWS Secret Access Key

從 IAM 取得 AWS Access Key ID 和 AWS Secret Access Key

1. 首先需要在 AWS IAM 當中創建新的使用者(範例為 shawn_test)

https://ithelp.ithome.com.tw/upload/images/20240918/20135427C3S0XvLTD8.png

2. 接著需要給這個使用者存取 s3 的權限,直接給 AmazonS3FullAccess(通常 SRE 不會同意,但我們在測試就不要計較了)

https://ithelp.ithome.com.tw/upload/images/20240918/20135427IB7PUXEVFq.png

3. 確認一下資訊沒問題就直接按 create user

4. 進到 shawn_test 當中,點擊 Create Access key 並下載 csv,即可取得 Access key IDSecret access key

https://ithelp.ithome.com.tw/upload/images/20240918/20135427soJ2wE9I3r.png

https://ithelp.ithome.com.tw/upload/images/20240918/20135427uY1QXnFtJh.png

https://ithelp.ithome.com.tw/upload/images/20240918/201354271JkSDN9Q6b.png

https://ithelp.ithome.com.tw/upload/images/20240918/20135427viaXAN6w6g.png

結語

明天就會帶著大家建立一個 S3 Bucket 並使用 S3Hook 進行連接,過程中也會提到另一種連接方式,可以直接在 docker-compose 當中設定 aws 環境變數,就不用到 Airflow 的網頁去設定,在不同環境下設定會更方便,明天見吧~


上一篇
【Day 3】DataOps 是什麼?
下一篇
【Day 5】Airflow 連接 AWS S3 - S3Hook
系列文
我獨自升級:從水管工走向 DataOps21
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言